package com.mintingi.pattern.adapter;

/**
 * Target 인터페스를 사용하는 클라이언트
 * 
 * @author mintingi
 *
 */
public class Client {

	/**
	 * 캡술화된 행동 인터페이스 변수
	 */
	private Target target;
	
	/**
	 * Default 생성자
	 */
	public Client() {
		this(null);
	}
	
	/**
	 * 생성시 의존성 주입(Dependency Injection, DI)
	 * @param target
	 */
	public Client(Target target) {
		this.target = target;
	}
	
	/**
	 * 작업 실행 메소드
	 */
	public void doWork() {
		// Target 인터페이스의 request()메소드 호출
		target.request();
	}

	/**
	 * Target 구현 어댑터 클래스 사용
	 * @return
	 */
	public Target getTarget() {
		return target;
	}

	/**
	 * setter 메서드를 이용하여 의존성 주입(Dependency Injection, DI)
	 * @param target
	 */
	public void setTarget(Target target) {
		this.target = target;
	}

}
